/**
 * JWT工具函数
 */

/**
 * 解析JWT token
 * @param token JWT token字符串
 * @returns 解析后的payload对象
 */
export function parseJWT(token: string): any {
  try {
    // JWT格式: header.payload.signature
    const parts = token.split('.');
    if (parts.length !== 3) {
      throw new Error('Invalid JWT format');
    }

    // 解析payload部分
    const payload = parts[1];
    // Base64解码
    const decodedPayload = atob(payload.replace(/-/g, '+').replace(/_/g, '/'));
    
    return JSON.parse(decodedPayload);
  } catch (error) {
    console.error('JWT解析失败:', error);
    return null;
  }
}

/**
 * 从JWT token中获取用户ID
 * @param token JWT token字符串
 * @returns 用户ID
 */
export function getUserIdFromToken(token: string): number | null {
  const payload = parseJWT(token);
  if (payload && payload.loginId) {
    return payload.loginId;
  }
  return null;
}

/**
 * 从JWT token中获取租户ID
 * @param token JWT token字符串
 * @returns 租户ID
 */
export function getTenantIdFromToken(token: string): number | null {
  const payload = parseJWT(token);
  if (payload && payload.tenant_id) {
    return payload.tenant_id;
  }
  return null;
}

/**
 * 检查JWT token是否过期
 * @param token JWT token字符串
 * @returns 是否过期
 */
export function isTokenExpired(token: string): boolean {
  const payload = parseJWT(token);
  if (!payload || !payload.eff) {
    return true;
  }
  
  // eff是过期时间戳（毫秒）
  const currentTime = Date.now();
  return currentTime >= payload.eff;
}
